package com.xrit.utils;

import com.xrit.constant.MessageConstant;
import com.xrit.result.Result;
import org.springframework.util.StringUtils;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

import java.util.Map;

/**
 * 验证码校验工具类
 */
public class ValideCodeUtils {

    /**
     * 验证是否通过
     * @param jedisPool
     * @param paraMap  请求参数
     * @param sendType 验证类型
     * @return
     */
    public static Result isValid(JedisPool jedisPool, Map<String,String> paraMap, String sendType){
        //手机号码我们在页面已经验证过了，所以这里我们还需要验证验证码是否正确
        Jedis jedis = jedisPool.getResource();
        //1.获取验证码
        String telephone = paraMap.get("telephone");
        //2.获取redis中的验证码
        //String key=telephone +"_"+ RedisMessageConstant.SENDTYPE_ORDER;
        String key=telephone +"_"+ sendType;
        String codeInRedis = jedis.get(key);
        //3.是否存在验证码
        if (StringUtils.isEmpty(codeInRedis)){
            //没值 重新发送
            return new Result(false, "请重新获取验证码!");
        }
        //4.获取前端过来的验证码
        String validateCode = paraMap.get("validateCode");
        //5.比较验证码是否一致
        if (!codeInRedis.equals(validateCode)){
            //不一致，则提示验证码有误
            return new Result(false, MessageConstant.VALIDATECODE_ERROR);
        }
        //一致，移除redis中的验证码，防止重复提交
        jedis.del(key);// 测试时可注释掉
        return new Result(true,"验证通过");
    }
}